package com.redisdemo.demo.util;

import java.io.IOException;
import java.util.List;

/**
 * @author
 */
public class TestRedisQueue {

    public static byte[] redisKey = "key".getBytes();
    static {
        try {
          //  init();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    //初始存入1000个消息到队列
    private static void init() throws IOException {
        for (int i = 0; i < 1000; i++) {
            Message message = new Message(i, "这是第" + i + "个内容");
            JedisUtil.lpush(redisKey, ObjectUtil.object2Bytes(message));
        }
    }

    //每运行一次取出100个消息
//    public static void main(String[] args) {
//        try {
//            new Thread("t") {
//                @Override
//                public void run() {
//                    while (true){
//                        pop("t");
//                    }
//
//                }
//            }.start();
//            new Thread("t1") {
//                @Override
//                public void run() {
//                    while (true){
//                        pop("t1");
//                    }
//                }
//            }.start();
//            new Thread("t2") {
//                @Override
//                public void run() {
//                    while (true){
//                        pop("t2");
//                    }
//                }
//            }.start();
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }
    //每运行一次取出100个消息
    public static void main(String[] args) {
        try {
            for(int i=0;i<2000;i++){
                pop("11");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    private static void pop(String t) {
        byte[] bytes = JedisUtil.rpop(redisKey);
        Message msg = null;
        try {
            msg = (Message) ObjectUtil.bytes2Object(bytes);
        } catch (Exception e) {
            e.printStackTrace();
        }
        if (msg != null) {
            System.out.println(t+"消费："+msg.getId() + "----" + msg.getContent());
        }
    }

    private static void bpop(String t) {
        List<byte[]> bytes = JedisUtil.brpop(redisKey);
        Message msg = null;
        try {
            for (byte[] aByte : bytes) {
                msg = (Message) ObjectUtil.bytes2Object(aByte);
            }
            if (msg != null) {
                System.out.println(t+"消费："+msg.getId() + "----" + msg.getContent());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}
